import identity_just from '@/assets/images/personnel/identity_just.png';
import identity_versa from '@/assets/images/personnel/identity_versa.png';
import degree from '@/assets/images/personnel/degree.png';
import degree1 from '@/assets/images/personnel/degree1.png';
import education from '@/assets/images/personnel/education.png';
export default {
  data() {
    return {};
  },
  methods: {
    getParams() {
      let params = [];
      this.form.fields.map(item => {
        if (item.label) {
          params.push({
            items: [{
              employeeModuleId: item.employeeModuleId,
              id: item.id,
              fields: []
            }],
            moduleCode: item.moudleTypeCode
          });
        }
      });
      this.form.fields.map(item => {
        params.map(formItems => {
          if (item.moudleTypeCode == formItems.moduleCode && item.isSpan) {
            formItems.items.push({
              employeeModuleId: item.employeeModuleId,
              id: item.id,
              fields: []
            });
          }
        });
      });
      params.map(formItems => {
        formItems.items.map(item => {
          item.fields = this.getFormItem(item.id);
        });
      });

      params.map(formItems => {
        formItems.items.map(item => {
          delete item.id;
        });
      });

      return params;
    },
    getFormItem(id) {
      let fields = [];
      this.form.fields.map(item => {
        if (item.id == id && !item.isSpan && !item.label) {
          fields.push({
            columnid: item.columnid,
            isCustom: item.iscustom,
            files: item.files,
            value: item.datatype == '6' || item.datatype == '7' ? this.getCascade(item.value) : item.value && item.value != null ? String(item.value) : ''
          });
          if (item.datatype == '6' || item.datatype == '14' || item.datatype == 2 && item.columnname == '试用期' || item.datatype == 2 && item.columnname == '合同期限') { // 地址 银行时添加详细
            let Value = item.fieldItems[0].value;
            fields.push({
              columnid: item.fieldItems[0].columnItemId,
              isCustom: item.iscustom,
              value: Value && Value != null ? String(Value) : '',
              files: item.fieldItems[0].files,
            });
          }
        }
      });
      return fields;
    },
    getCascade(arr) {
      if (!arr) {
        return '';
      }
      let nameText = '';
      arr?.map(item => {
        nameText += item + ',';
      });
      nameText = nameText.substring(0, nameText.lastIndexOf(","));
      return nameText ?? '';
    },
    getImgUrl(name) {
      let url;
      if (name == '身份证正面') {
        url = identity_just;
      } else if (name == '身份证反面') {
        url = identity_versa;
      } else if (name == '学历证书') {
        url = education;
      } else if (name == '学位证书') {
        url = degree;
      } else if (name == '工资卡') {
        url = degree1;
      }

      return url;
    },
    getMouName(moudleTypeCode) {
      let obj = this.management.find(item => {
        return item.modulecode == moudleTypeCode;
      });
      return obj ? obj.modulename : '';
    },

    /*
     * 设置裁剪后的数据
     * 失去焦点 重新设置数据为前五十条 如果该对象已经绑定了数据 则把绑定的数据push进去
     * 组件创建的时候 如果绑定了数据则把绑定的数据push进去 否则不做任何操作
     * params => dadData > 所有祖先数据
     * | modelVal > 绑定的id
     * | isCreated 创建 > true blur() > false
     * | keyName 自定义绑定属性 默认aid
     * | momData 页面绑定得列表数据 不传该参数会把数据return回去
     * | isTimeout 延迟200毫秒执行
     * | name  传入默认值的字段---'xxx.xxx'  如果没有匹配值 清空默认值  可以不传
     * | sliceNum 'unlimited' => 不限制长度 | 可传入具体数值 | 默认200
     */
    initTailoringData(dadData, modelVal, keyName, momData, isTimeout, name, sliceNum) {
      let that = this;
      if (isTimeout) {
        setTimeout(() => {
          return resetTailoringData();
        }, 200);
      } else {
        return resetTailoringData();
      }

      function resetTailoringData() {
        if (sessionStorage.getItem('isChangeEvent') == 'true' && isTimeout == 'isBlur') { // change 和 blur事件不重复执行
          return false;
        }
        let _sonData;
        if (sliceNum == 'unlimited') { // 无限制长度肯定存在当前选择项
          _sonData = dadData;
        } else {
          let _key = keyName || 'aid';
          _sonData = dadData.slice(0, sliceNum || 600);
          if (modelVal) {
            let listYes = _sonData.find(item => { // 查询截取的数据中是否有当前选中的项
              return item[_key] == modelVal;
            });
            if (listYes) { // 50条数据中有当前选中的项
              if (momData) {
                that[momData] = _sonData;
              } else {
                return _sonData;
              }
            } else { // 50条数据中没有当前选中的项
              let modelItem = dadData.find(item => {
                return item[_key] == modelVal;
              });
              if (modelItem) {
                _sonData.push(modelItem);
              } else {
                if (name) {
                  let arr = name.split('.');
                  that[arr[0]][arr[1]] = '';
                }
              }
              if (momData) {
                that[momData] = _sonData;
              } else {
                return _sonData;
              }
            }
          }
        }
        if (momData) {
          that[momData] = _sonData;
        } else {
          return _sonData;
        }
      }
    },

    /*
     * 模糊搜索并 搜索裁剪后的数据
     * 需要配合 ele的 filter-method一起使用
     * params >>
     * dadData > 所有祖先数据
     * | keyObj 模糊搜索item的Key
     * | val > 当前下拉框输入的值
     * | momData 页面绑定得列表数据 不传该参数会把数据return回去
     * | ref 是否在搜索之后把下拉滚动条滚动到最上面
     * | sliceNum 'unlimited' => 不限制长度 | 可传入具体数值 | 默认200
     */
    tailoringFilter(dadData, keyObj, val, momData, ref, sliceNum, idAddRandom) {
      let _dadData = dadData.slice();
      let _sonData = [];
      if (val && _dadData.length != 0) {
        let containArr = []; // 包含该val的
        let matchingArr = []; // 开始的值等于该val的
        let removeSpaceVal = val.split(' ').join(''); // 去除空格后的val
        for (let i = 0; i < _dadData.length; i++) {
          // 不再限制传入得属性数量 2021/2/3 pt
          // 原 let labelString = _dadData[i][keyObj.key1] + ' ' + _dadData[i][keyObj.key2]
          let labelString = '';
          for (let key in keyObj) {
            labelString = labelString + _dadData[i][keyObj[key]];
          }
          // if(containArr.length + matchingArr.length >= 200){
          //   break
          // }
          // labelString.indexOf(val) !== -1 &&  2021/3/20
          if (labelString.substring(0, val.length) == val || labelString.substring(0, removeSpaceVal.length) == removeSpaceVal) {
            if (idAddRandom) {
              _dadData[i].id += Math.random();
            }
            matchingArr.push(_dadData[i]);
          } else if (labelString.indexOf(val) !== -1) {
            if (idAddRandom) {
              _dadData[i].id += Math.random();
            }
            containArr.push(_dadData[i]);
          }
        }
        if (sliceNum == 'unlimited') { // 无限制
          _sonData = [...matchingArr, ...containArr];
        } else {
          _sonData = [...matchingArr, ...containArr].slice(0, sliceNum || 600);
        }
      } else {
        if (sliceNum == 'unlimited') { // 无限制
          _sonData = _dadData;
        } else {
          _sonData = _dadData.slice(0, sliceNum || 600);
        }
      }
      // if(ref) {
      //   if(_sonData.length != 0) {
      //     this.$refs[ref].$refs.scrollbar.$children[0].wrap.scrollTop = 0;
      //   }
      // }
      if (momData) {
        this[momData] = _sonData;
      } else {
        return _sonData;
      }

    },
    getGuid() {
      function S4() {
        return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
      }
      return S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4();
    },
    getDateTime(value) {
      let date = new Date(value);
      var y = date.getFullYear();
      var m = date.getMonth() + 1;
      m = m < 10 ? '0' + m : m;
      var d = date.getDate();
      d = d < 10 ? '0' + d : d;
      return y + '-' + m + '-' + d;
    }
  }
};
